﻿
using System;
using System.Collections;
using System.IO;
using System.Data.SqlClient;
using System.Globalization;
using System.Runtime.Serialization;
using ProtoBuf;/*https://github.com/ServiceStack/ServiceStack/tree/master/lib*/
using ServiceStack.Text;/*https://github.com/ServiceStack/ServiceStack.Text*/
using V82;
using V82.ОбщиеОбъекты;
using V82.СправочникиСсылка;
using V82.ДокументыСсылка;
using V82.Перечисления;//Ссылка;
namespace V82.СправочникиСсылка
{
	[ProtoContract]
	[DataContract]
	public partial class УчетныеЗаписиЭлектроннойПочты:СправочникСсылка,IСериализаторProtoBuf,IСериализаторJson
	{
		public static readonly Guid ГуидКласса = new Guid("adfa05bd-794e-4a3c-a21a-2632e7b3500b");
		public static readonly DateTime ВерсияКласса = DateTime.ParseExact("20120928012029.000", new string[] {"yyyyMMddHHmmss.fff"}, CultureInfo.InvariantCulture, DateTimeStyles.None);
		public static readonly long КонтрольнаяСуммаКласса = 123;
		[DataMember]
		[ProtoMember(1)]
		public Guid Ссылка {get;set;}
		[DataMember]
		[ProtoMember(2)]
		public long Версия {get;set;}
		public string ВерсияДанных {get;set;}
		/*static хэш сумма состава и порядка реквизитов*/
		/*версия класса восстановленного из пакета*/
		public bool ПометкаУдаления {get;set;}
		public bool Предопределенный {get;set;}
		public string/*9*/ Код {get;set;}
		[DataMember(Name = "Представление")]//Проверить основное представление.
		[ProtoMember(3)]
		public string/*150*/ Наименование {get;set;}
		public string/*(100)*/ SMTPСервер {get;set;}//Сервер исходящей почты (SMTP)
		public string/*(100)*/ POP3Сервер {get;set;}//Сервер входящей почты (POP3)
		public decimal/*(4)*/ ПортSMTP {get;set;}//Порт SMTP
		public decimal/*(4)*/ ПортPOP3 {get;set;}//Порт POP3
		public string/*(200)*/ Логин {get;set;}
		public string/*(200)*/ Пароль {get;set;}
		public bool ТребуетсяSMTPАутентификация {get;set;}//Требуется SMTP Аутентификация
		public string/*(200)*/ ЛогинSMTP {get;set;}//Логин SMTP
		public string/*(200)*/ ПарольSMTP {get;set;}//Пароль SMTP
		public decimal/*(4)*/ ВремяОжиданияСервера {get;set;}//Время ожидания сервера
		public bool ОставлятьКопииСообщенийНаСервере {get;set;}//Оставлять копии сообщений на сервере
		public bool УдалятьПисьмаССервераЧерез {get;set;}//Удалять письма с сервера через
		public decimal/*(3)*/ КоличествоДнейУдаленияПисемССервера {get;set;}//Количество дней удаления писем с сервера
		public string/*(150)*/ АдресЭлектроннойПочты {get;set;}//Адрес электронной почты
		public V82.СправочникиСсылка.ГруппыПисемЭлектроннойПочты ГруппаВходящие {get;set;}//Группа входящие
		public V82.СправочникиСсылка.ГруппыПисемЭлектроннойПочты ГруппаИсходящие {get;set;}//Группа исходящие
		public V82.СправочникиСсылка.ГруппыПисемЭлектроннойПочты ГруппаУдаленные {get;set;}//Группа удаленные
		public V82.СправочникиСсылка.ГруппыПисемЭлектроннойПочты ГруппаЧерновики {get;set;}//Группа черновики
		public V82.СправочникиСсылка.ГруппыПисемЭлектроннойПочты ГруппаНежелательные {get;set;}//Группа нежелательные
		public V82.Перечисления/*Ссылка*/.ВидыТекстовЭлектронныхПисем ФорматТекстаПисьмаПоУмолчанию {get;set;}//Формат текста письма по умолчанию
		public string/*(0)*/ ТекстПодписи {get;set;}//Текст подписи
		public bool ДобавлятьПодписьКИсходящимПисьмам {get;set;}//Добавлять подпись к исходящим письмам
		public bool ДобавлятьПодписьКОтветамИПересылкам {get;set;}//Добавлять подпись к ответам и пересылкам
		public bool АвтоПолучениеОтправкаСообщений {get;set;}//Авто получение/отправка сообщений
		public decimal/*(2)*/ ИнтервалАвтоПолученияОтправкиСообщений {get;set;}//Интервал авто получения/отправки сообщений (в минутах)
		public V82.СправочникиСсылка.Пользователи ОтветственныйЗаАвтоПолучениеОтправкуСообщений {get;set;}//Ответственный за авто получение отправку сообщений
		public bool ПомещатьОтветыИПереадресацииВТужеГруппу {get;set;}//Помещать ответы и переадресации в туже группу
		public V82.Перечисления/*Ссылка*/.ВидыДействийАвтоПолученияОтправкиЭлектронныхПисем ДействиеАвтополученияОтправкиСообщений {get;set;}//Действие автополучения отправки сообщений
		public bool АвтоматическаяУстановкаПометкиРассмотрено {get;set;}//Автоматическая установка пометки рассмотрено
		public decimal/*(2)*/ ИнтервалАвтоматическойУстановкиОтметкиРассмотрено {get;set;}//Интервал автоматической установки отметки рассмотрено
		public bool АвтоматическаяУстановкаПометкиРассмотреноПриОтвете {get;set;}//Автоматическая установка пометки рассмотрено при ответе
		public bool АвтоматическаяУстановкаПометкиРассмотреноПриПолученииОтвета {get;set;}//Автоматическая установка пометки рассмотрено при ответе или переадресации
		public bool ИспользоватьКлассификациюПисемПоПредметам {get;set;}//Использовать классификацию писем по предметам
		public bool ЗаполнятьПустойПредметДляНовыхПисемИзТемыПисьма {get;set;}//Заполнять пустой предмет для новых писем из темы письма
		public bool ДляВходящихОтветовИПереадресацийИскатьПисьмаОснованияИЗаполнятьПредмет {get;set;}//Для входящих ответов и переадресаций искать письма основания и заполнять предмет
		public bool ДляВходящихОтветовИПереадресацийИскатьПисьмаОснованияИЗаполнятьОснованиеНовогоПисьма {get;set;}//Для входящих ответов и переадресаций искать письма основания и заполнять основание нового письма
		public bool ДляВходящихОтветовИПереадресацийИскатьПисьмаОснованияИЗаполнятьГруппуПисемНовогоПисьма {get;set;}//Для входящих ответов и переадресаций искать письма основания и заполнять группу писем нового письма
		public bool АвтосохранениеПисем {get;set;}//Автосохранение писем
		public decimal/*(3)*/ ИнтервалАвтосохраненияПисем {get;set;}//Интервал автосохранения писем
		public bool ФорматПисьмаДляОтветовИПереадресацийБратьИзИсходного {get;set;}//Формат письма для ответов и переадресаций брать из исходного
		public string/*(200)*/ КодировкаПисемПоУмолчанию {get;set;}//Кодировка писем по умолчанию
		public bool КодировкуПисьмаДляОтветовБратьИзИсходного {get;set;}//Кодировку письма для ответов брать из исходного
		public bool ЗаполнятьОбъектыИзАдресовПервогоПисьма {get;set;}//Заполнять объекты из адресов первого письма
		public V82.Перечисления/*Ссылка*/.НазначенияУчетнойЗаписи НазначениеУчетнойЗаписи {get;set;}//Назначение учетной записи
		///<summary>
		///И
		///</summary>
		public bool ИспользоватьДляОтправки {get;set;}//Использовать для отправки
		public bool ИспользоватьДляПолучения {get;set;}//Использовать для получения
		
		public УчетныеЗаписиЭлектроннойПочты()
		{
		}
		
		public УчетныеЗаписиЭлектроннойПочты(byte[] УникальныйИдентификатор)
			: this(УникальныйИдентификатор,0)
		{
		}
		
		public УчетныеЗаписиЭлектроннойПочты(byte[] УникальныйИдентификатор,int Глубина)
		{
			if (Глубина>3)
			{
				return;
			}
			if (new Guid(УникальныйИдентификатор) == Guid.Empty)
			{
				return;
			}
			using (var Подключение = new SqlConnection(СтрокаСоединения))
			{
				Подключение.Open();
				using (var Команда = Подключение.CreateCommand())
				{
					Команда.CommandText = @"Select top 1 
					_IDRRef [Ссылка]
					,_Version [Версия]
					,_Marked [ПометкаУдаления]
					,_IsMetadata [Предопределенный]
					,_Code [Код]
					,_Description [Наименование]
					,_Fld2144 [SMTPСервер]
					,_Fld2145 [POP3Сервер]
					,_Fld2146 [ПортSMTP]
					,_Fld2147 [ПортPOP3]
					,_Fld2148 [Логин]
					,_Fld2149 [Пароль]
					,_Fld2150 [ТребуетсяSMTPАутентификация]
					,_Fld2151 [ЛогинSMTP]
					,_Fld2152 [ПарольSMTP]
					,_Fld2153 [ВремяОжиданияСервера]
					,_Fld2154 [ОставлятьКопииСообщенийНаСервере]
					,_Fld2155 [УдалятьПисьмаССервераЧерез]
					,_Fld2156 [КоличествоДнейУдаленияПисемССервера]
					,_Fld2157 [АдресЭлектроннойПочты]
					,_Fld2158RRef [ГруппаВходящие]
					,_Fld2159RRef [ГруппаИсходящие]
					,_Fld2160RRef [ГруппаУдаленные]
					,_Fld2161RRef [ГруппаЧерновики]
					,_Fld21295RRef [ГруппаНежелательные]
					,_Fld2162RRef [ФорматТекстаПисьмаПоУмолчанию]
					,_Fld2163 [ТекстПодписи]
					,_Fld2164 [ДобавлятьПодписьКИсходящимПисьмам]
					,_Fld2165 [ДобавлятьПодписьКОтветамИПересылкам]
					,_Fld2166 [АвтоПолучениеОтправкаСообщений]
					,_Fld2167 [ИнтервалАвтоПолученияОтправкиСообщений]
					,_Fld2168RRef [ОтветственныйЗаАвтоПолучениеОтправкуСообщений]
					,_Fld2169 [ПомещатьОтветыИПереадресацииВТужеГруппу]
					,_Fld2170RRef [ДействиеАвтополученияОтправкиСообщений]
					,_Fld2171 [АвтоматическаяУстановкаПометкиРассмотрено]
					,_Fld2172 [ИнтервалАвтоматическойУстановкиОтметкиРассмотрено]
					,_Fld2180 [АвтоматическаяУстановкаПометкиРассмотреноПриОтвете]
					,_Fld2181 [АвтоматическаяУстановкаПометкиРассмотреноПриПолученииОтвета]
					,_Fld2173 [ИспользоватьКлассификациюПисемПоПредметам]
					,_Fld2174 [ЗаполнятьПустойПредметДляНовыхПисемИзТемыПисьма]
					,_Fld2175 [ДляВходящихОтветовИПереадресацийИскатьПисьмаОснованияИЗаполнятьПредмет]
					,_Fld2176 [ДляВходящихОтветовИПереадресацийИскатьПисьмаОснованияИЗаполнятьОснованиеНовогоПисьма]
					,_Fld2182 [ДляВходящихОтветовИПереадресацийИскатьПисьмаОснованияИЗаполнятьГруппуПисемНовогоПисьма]
					,_Fld2177 [АвтосохранениеПисем]
					,_Fld2178 [ИнтервалАвтосохраненияПисем]
					,_Fld2179 [ФорматПисьмаДляОтветовИПереадресацийБратьИзИсходного]
					,_Fld2183 [КодировкаПисемПоУмолчанию]
					,_Fld2184 [КодировкуПисьмаДляОтветовБратьИзИсходного]
					,_Fld2185 [ЗаполнятьОбъектыИзАдресовПервогоПисьма]
					,_Fld21296RRef [НазначениеУчетнойЗаписи]
					,_Fld26646 [ИспользоватьДляОтправки]
					,_Fld26647 [ИспользоватьДляПолучения]
					From _Reference189(NOLOCK)
					Where _IDRRef=@УникальныйИдентификатор  ";
					Команда.Parameters.AddWithValue("УникальныйИдентификатор", УникальныйИдентификатор);
					using (var Читалка = Команда.ExecuteReader())
					{
						if (Читалка.Read())
						{
							//ToDo: Читать нужно через GetValues()
							Ссылка = new Guid((byte[])Читалка.GetValue(0));
							var ПотокВерсии = ((byte[])Читалка.GetValue(1));
							Array.Reverse(ПотокВерсии);
							Версия =  BitConverter.ToInt64(ПотокВерсии, 0);
							ВерсияДанных =  Convert.ToBase64String(ПотокВерсии);
							ПометкаУдаления = ((byte[])Читалка.GetValue(2))[0]==1;
							Предопределенный = ((byte[])Читалка.GetValue(3))[0]==1;
							Код = Читалка.GetString(4);
							Наименование = Читалка.GetString(5);
								SMTPСервер = Читалка.GetString(6);
								POP3Сервер = Читалка.GetString(7);
								ПортSMTP = Читалка.GetDecimal(8);
								ПортPOP3 = Читалка.GetDecimal(9);
								Логин = Читалка.GetString(10);
								Пароль = Читалка.GetString(11);
								ТребуетсяSMTPАутентификация = ((byte[])Читалка.GetValue(12))[0]==1;
								ЛогинSMTP = Читалка.GetString(13);
								ПарольSMTP = Читалка.GetString(14);
								ВремяОжиданияСервера = Читалка.GetDecimal(15);
								ОставлятьКопииСообщенийНаСервере = ((byte[])Читалка.GetValue(16))[0]==1;
								УдалятьПисьмаССервераЧерез = ((byte[])Читалка.GetValue(17))[0]==1;
								КоличествоДнейУдаленияПисемССервера = Читалка.GetDecimal(18);
								АдресЭлектроннойПочты = Читалка.GetString(19);
								ГруппаВходящие = new V82.СправочникиСсылка.ГруппыПисемЭлектроннойПочты((byte[])Читалка.GetValue(20),Глубина+1);
								ГруппаИсходящие = new V82.СправочникиСсылка.ГруппыПисемЭлектроннойПочты((byte[])Читалка.GetValue(21),Глубина+1);
								ГруппаУдаленные = new V82.СправочникиСсылка.ГруппыПисемЭлектроннойПочты((byte[])Читалка.GetValue(22),Глубина+1);
								ГруппаЧерновики = new V82.СправочникиСсылка.ГруппыПисемЭлектроннойПочты((byte[])Читалка.GetValue(23),Глубина+1);
								ГруппаНежелательные = new V82.СправочникиСсылка.ГруппыПисемЭлектроннойПочты((byte[])Читалка.GetValue(24),Глубина+1);
								ФорматТекстаПисьмаПоУмолчанию = V82.Перечисления/*Ссылка*/.ВидыТекстовЭлектронныхПисем.ПустаяСсылка.Получить((byte[])Читалка.GetValue(25));
								ТекстПодписи = Читалка.GetString(26);
								ДобавлятьПодписьКИсходящимПисьмам = ((byte[])Читалка.GetValue(27))[0]==1;
								ДобавлятьПодписьКОтветамИПересылкам = ((byte[])Читалка.GetValue(28))[0]==1;
								АвтоПолучениеОтправкаСообщений = ((byte[])Читалка.GetValue(29))[0]==1;
								ИнтервалАвтоПолученияОтправкиСообщений = Читалка.GetDecimal(30);
								ОтветственныйЗаАвтоПолучениеОтправкуСообщений = new V82.СправочникиСсылка.Пользователи((byte[])Читалка.GetValue(31),Глубина+1);
								ПомещатьОтветыИПереадресацииВТужеГруппу = ((byte[])Читалка.GetValue(32))[0]==1;
								ДействиеАвтополученияОтправкиСообщений = V82.Перечисления/*Ссылка*/.ВидыДействийАвтоПолученияОтправкиЭлектронныхПисем.ПустаяСсылка.Получить((byte[])Читалка.GetValue(33));
								АвтоматическаяУстановкаПометкиРассмотрено = ((byte[])Читалка.GetValue(34))[0]==1;
								ИнтервалАвтоматическойУстановкиОтметкиРассмотрено = Читалка.GetDecimal(35);
								АвтоматическаяУстановкаПометкиРассмотреноПриОтвете = ((byte[])Читалка.GetValue(36))[0]==1;
								АвтоматическаяУстановкаПометкиРассмотреноПриПолученииОтвета = ((byte[])Читалка.GetValue(37))[0]==1;
								ИспользоватьКлассификациюПисемПоПредметам = ((byte[])Читалка.GetValue(38))[0]==1;
								ЗаполнятьПустойПредметДляНовыхПисемИзТемыПисьма = ((byte[])Читалка.GetValue(39))[0]==1;
								ДляВходящихОтветовИПереадресацийИскатьПисьмаОснованияИЗаполнятьПредмет = ((byte[])Читалка.GetValue(40))[0]==1;
								ДляВходящихОтветовИПереадресацийИскатьПисьмаОснованияИЗаполнятьОснованиеНовогоПисьма = ((byte[])Читалка.GetValue(41))[0]==1;
								ДляВходящихОтветовИПереадресацийИскатьПисьмаОснованияИЗаполнятьГруппуПисемНовогоПисьма = ((byte[])Читалка.GetValue(42))[0]==1;
								АвтосохранениеПисем = ((byte[])Читалка.GetValue(43))[0]==1;
								ИнтервалАвтосохраненияПисем = Читалка.GetDecimal(44);
								ФорматПисьмаДляОтветовИПереадресацийБратьИзИсходного = ((byte[])Читалка.GetValue(45))[0]==1;
								КодировкаПисемПоУмолчанию = Читалка.GetString(46);
								КодировкуПисьмаДляОтветовБратьИзИсходного = ((byte[])Читалка.GetValue(47))[0]==1;
								ЗаполнятьОбъектыИзАдресовПервогоПисьма = ((byte[])Читалка.GetValue(48))[0]==1;
								НазначениеУчетнойЗаписи = V82.Перечисления/*Ссылка*/.НазначенияУчетнойЗаписи.ПустаяСсылка.Получить((byte[])Читалка.GetValue(49));
								ИспользоватьДляОтправки = ((byte[])Читалка.GetValue(50))[0]==1;
								ИспользоватьДляПолучения = ((byte[])Читалка.GetValue(51))[0]==1;
							//return Ссылка;
						}
						else
						{
							//return null;
						}
					}
				}
			}
		}
		
		public V82.СправочникиОбъект.УчетныеЗаписиЭлектроннойПочты  ПолучитьОбъект()
		{
			var Объект = new V82.СправочникиОбъект.УчетныеЗаписиЭлектроннойПочты();
			Объект._ЭтоНовый = false;
			Объект.Ссылка = Ссылка;
			Объект.Версия = Версия;
			Объект.ПометкаУдаления = ПометкаУдаления;
			Объект.Предопределенный = Предопределенный;
			Объект.Код = Код;
			Объект.Наименование = Наименование;
			Объект.SMTPСервер = SMTPСервер;
			Объект.POP3Сервер = POP3Сервер;
			Объект.ПортSMTP = ПортSMTP;
			Объект.ПортPOP3 = ПортPOP3;
			Объект.Логин = Логин;
			Объект.Пароль = Пароль;
			Объект.ТребуетсяSMTPАутентификация = ТребуетсяSMTPАутентификация;
			Объект.ЛогинSMTP = ЛогинSMTP;
			Объект.ПарольSMTP = ПарольSMTP;
			Объект.ВремяОжиданияСервера = ВремяОжиданияСервера;
			Объект.ОставлятьКопииСообщенийНаСервере = ОставлятьКопииСообщенийНаСервере;
			Объект.УдалятьПисьмаССервераЧерез = УдалятьПисьмаССервераЧерез;
			Объект.КоличествоДнейУдаленияПисемССервера = КоличествоДнейУдаленияПисемССервера;
			Объект.АдресЭлектроннойПочты = АдресЭлектроннойПочты;
			Объект.ГруппаВходящие = ГруппаВходящие;
			Объект.ГруппаИсходящие = ГруппаИсходящие;
			Объект.ГруппаУдаленные = ГруппаУдаленные;
			Объект.ГруппаЧерновики = ГруппаЧерновики;
			Объект.ГруппаНежелательные = ГруппаНежелательные;
			Объект.ФорматТекстаПисьмаПоУмолчанию = ФорматТекстаПисьмаПоУмолчанию;
			Объект.ТекстПодписи = ТекстПодписи;
			Объект.ДобавлятьПодписьКИсходящимПисьмам = ДобавлятьПодписьКИсходящимПисьмам;
			Объект.ДобавлятьПодписьКОтветамИПересылкам = ДобавлятьПодписьКОтветамИПересылкам;
			Объект.АвтоПолучениеОтправкаСообщений = АвтоПолучениеОтправкаСообщений;
			Объект.ИнтервалАвтоПолученияОтправкиСообщений = ИнтервалАвтоПолученияОтправкиСообщений;
			Объект.ОтветственныйЗаАвтоПолучениеОтправкуСообщений = ОтветственныйЗаАвтоПолучениеОтправкуСообщений;
			Объект.ПомещатьОтветыИПереадресацииВТужеГруппу = ПомещатьОтветыИПереадресацииВТужеГруппу;
			Объект.ДействиеАвтополученияОтправкиСообщений = ДействиеАвтополученияОтправкиСообщений;
			Объект.АвтоматическаяУстановкаПометкиРассмотрено = АвтоматическаяУстановкаПометкиРассмотрено;
			Объект.ИнтервалАвтоматическойУстановкиОтметкиРассмотрено = ИнтервалАвтоматическойУстановкиОтметкиРассмотрено;
			Объект.АвтоматическаяУстановкаПометкиРассмотреноПриОтвете = АвтоматическаяУстановкаПометкиРассмотреноПриОтвете;
			Объект.АвтоматическаяУстановкаПометкиРассмотреноПриПолученииОтвета = АвтоматическаяУстановкаПометкиРассмотреноПриПолученииОтвета;
			Объект.ИспользоватьКлассификациюПисемПоПредметам = ИспользоватьКлассификациюПисемПоПредметам;
			Объект.ЗаполнятьПустойПредметДляНовыхПисемИзТемыПисьма = ЗаполнятьПустойПредметДляНовыхПисемИзТемыПисьма;
			Объект.ДляВходящихОтветовИПереадресацийИскатьПисьмаОснованияИЗаполнятьПредмет = ДляВходящихОтветовИПереадресацийИскатьПисьмаОснованияИЗаполнятьПредмет;
			Объект.ДляВходящихОтветовИПереадресацийИскатьПисьмаОснованияИЗаполнятьОснованиеНовогоПисьма = ДляВходящихОтветовИПереадресацийИскатьПисьмаОснованияИЗаполнятьОснованиеНовогоПисьма;
			Объект.ДляВходящихОтветовИПереадресацийИскатьПисьмаОснованияИЗаполнятьГруппуПисемНовогоПисьма = ДляВходящихОтветовИПереадресацийИскатьПисьмаОснованияИЗаполнятьГруппуПисемНовогоПисьма;
			Объект.АвтосохранениеПисем = АвтосохранениеПисем;
			Объект.ИнтервалАвтосохраненияПисем = ИнтервалАвтосохраненияПисем;
			Объект.ФорматПисьмаДляОтветовИПереадресацийБратьИзИсходного = ФорматПисьмаДляОтветовИПереадресацийБратьИзИсходного;
			Объект.КодировкаПисемПоУмолчанию = КодировкаПисемПоУмолчанию;
			Объект.КодировкуПисьмаДляОтветовБратьИзИсходного = КодировкуПисьмаДляОтветовБратьИзИсходного;
			Объект.ЗаполнятьОбъектыИзАдресовПервогоПисьма = ЗаполнятьОбъектыИзАдресовПервогоПисьма;
			Объект.НазначениеУчетнойЗаписи = НазначениеУчетнойЗаписи;
			Объект.ИспользоватьДляОтправки = ИспользоватьДляОтправки;
			Объект.ИспользоватьДляПолучения = ИспользоватьДляПолучения;
			return Объект;
		}
		
		private static readonly Hashtable Кэш = new Hashtable(1000);
		
		public static V82.СправочникиСсылка.УчетныеЗаписиЭлектроннойПочты ВзятьИзКэша(byte[] УникальныйИдентификатор)
		{
			var УИ = new Guid(УникальныйИдентификатор);
			if (Кэш.ContainsKey(УИ))
			{
				return (V82.СправочникиСсылка.УчетныеЗаписиЭлектроннойПочты)Кэш[УИ];
			}
			var Ссылка = new V82.СправочникиСсылка.УчетныеЗаписиЭлектроннойПочты(УникальныйИдентификатор);
			Кэш.Add(УИ, Ссылка);
			return Ссылка;
		}
		
		public void СериализацияProtoBuf(Stream Поток)
		{
			Serializer.Serialize(Поток,this);
		}
		
		public string СериализацияJson()
		{
			return this.ToJson();
		}
		
		public string СериализацияXml()
		{
			return this.ToXml();
		}
	}
}